<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- JS中数据类型 分为基本数据类型和引用数据类型在引用数据类型
    在引用数据类型发生改变时通常是浅拷贝(不考虑特殊改变形式下) -->
    <script>
        let a ={
            a:1,
            b:{
                c:2,
                d:{
                    a:[
                        1,2,3,4,5,6,
                        {
                            k:1,
                            c:0,
                            e:[
                                2,3,4,5,6,7,8,
                                {
                                    a:1,
                                    b:2,
                                    r:1
                                }
                            ]

                        }
                    ]
                }
            }
        }

        var b=JSON.parse(JSON.stringify(a));
        b.b.d.a[6].c=1;
        console.log(a);
        console.log(b);


        let fn=[];
        function tuzi(index) {  
            if(index<2){
               fn[index]=1
            }else{
                fn[index] =fn[index-1]+ fn[index-2]
            }
            if(index<49){
                tuzi(index+1)
            }
        }
        tuzi(0)
        console.log(fn);


        //深海之递归拷贝
        var b=deepClone(a);
        b.b.c=1;
        console.log(a);
        console.log(b);
        function deepClone(obj) {  
            //Array.isArray()
            //判断是不是数组
            var objClone = Array.isArray(obj)?[]:{};
            //判断当前obj是不是存在的 null underfind
            if(obj && typeof(obj)=="object"){
                //循环当前的对象
                for(let key in obj){
                    //判断当前对象有没有下标，如果没有就空对象组
                    //判断当前对象有没有下标hasOwnProperty()
                    if(obj.hasOwnProperty(key)){
                        //如果当前obj有下标且obj[key]仍然是个独享，那继续把obj[key]
                        //去重新进deepCLone方法
                        if(obj[key] && typeof(obj[key])=="object"){
                            objClone[key]=deepClone(obj[key])
                        }else{
                            objClone[key]=obj[key]
                        }
                    }
                }
            }
            return objClone
        }
    </script>
</body>

</html>